/**
 * @author F.biz - http://www.fbiz.com.br/
 */
if(!window['fbiz'])
	var fbiz = {};

(function($){

	if(!$) {
		throw new Error ('jQuery is needed for "fbiz.FillAddress"');
		return;
	}
	
	/**
	 * Ajax controller ("service")
	 * @needs {jQuery}
	 */ 
	fbiz.LazyAjax = function(type, url, data, dataType){
		
		var _this = this;
		
		// data
		this.type = type;
		this.url = url;
		this.data = data;
		this.dataType = dataType;
		
		this.send = function(data){
			var dataToSend = _this.data || {};
			for(var name in data){
				dataToSend[name] = data[name];
			}
			$.ajax({
				type: _this.type,
				url: _this.url,
				data: dataToSend,
				dataType: _this.dataType,
				success: function(data, status){
					$(_this).trigger('complete', {
						data: data,
						status: status
					});
				},
				error: function(data, status, stack){
					$(_this).trigger('error', {
						data: data,
						status: status,
						stack: stack
					});
				}
			});
		};
	};
	
	/**
	 * FillAddress class
	 */
	fbiz.FillAddress = function(ajax, elements){
		var _this = this;
		
		var empty = $(document.createElement('input')); // to avoid error caused by null elements;
		this.ajax = ajax;
		this.button = elements.button || empty;
		this.cep = elements.cep || empty;
		this.street = elements.street || empty;
		this.neighbour = elements.neighbour || empty;
		this.state = elements.state || empty;
		this.city = elements.city || empty;
		this.feedback = elements.feedback || $(document.createElement('span'));
		this.feedback.addClass('cepFeedback cepError');
		this.lastCEP = '';
		
		var _onComplete = function(e, extra){
			var errorMsg = 'Não foi possível encontrar o cep '+_this.lastCEP;
			
			if(extra.data != null){
				if(extra.data[0] === true && extra.data[1] && extra.data[1].length == 5){
					_this.street.val(extra.data[1][4]);
					_this.neighbour.val(extra.data[1][3]);
					_this.state.val(extra.data[1][1]);
					_this.city.val(extra.data[1][2]);
				}else{
					_this.feedback.text(extra.data[1].length == 1 ? unescape(extra.data[1][0]) : errorMsg);
					alert(errorMsg);
					_this.feedback.show();
					//_this.button.after(_this.feedback);
					
				}
			}else{
				_this.feedback.text(errorMsg);
				_this.feedback.show();
				alert(errorMsg);
				//_this.button.after(_this.feedback);
			}
		};
		
		// init
		$(this.ajax).bind('complete', _onComplete);
		this.button.show();
		this.button.attr('href', 'javascript:;');
		this.button.bind('click', function(e){
			_this.lastCEP = '';
			for(var i=0; _this.cep[i]; i++){
				_this.lastCEP += _this.cep[i].val();
			}
			_this.feedback.hide();
			_this.ajax.send({
				'cep': _this.lastCEP
			});
		});
	};
	
	/**
	 * fillAddress shortcut
	 * @param {Object} data config
	 * @option {Object} ajax config ajax data
	 * @option  {String} url
	 * @option {Object} nodes input forms to be filled
	 * @option  {jQuery} button "call cep" button
	 * @option  {jQuery} cep field
	 * @option  {jQuery} street field
	 * @option  {jQuery} neighbour field
	 * @option  {jQuery} state field
	 * @option  {jQuery} city field
	 * @option  {jQuery} feedback field
	 * @example
		<code>
		var btValidar = $('#btValidar');
		fbiz.FillAddress.parseJSON({
			ajax:{
				url: btValidar.attr('href')
			},
			nodes:{
				button: btValidar,
				cep: [$('#usuario_Cep_inicio'), $('#usuario_Cep_fim')],
				street: $('#usuario_Endereco'),
				neighbour: $('#usuario_Bairro'),
				state: $('#usuario_Estado'),
				city: $('#usuario_Cidade')
			}
		});
		</code>
	 */
	fbiz.FillAddress.parseJSON = function(data){
		fbiz.FillAddress(
			new fbiz.LazyAjax('get', data.ajax.url, null, 'json'),
			data.nodes
		);
	};
	
})(jQuery);
fbiz.Seda.validate = {
	cadastro: function(){	
		try {
			var salvar = $('#ctl00_cphMainContent_btSalvar')[0].onclick
			$('#ctl00_cphMainContent_btSalvar')[0].onclick = null
			
			var entrar = $('#ctl00_cphMainContent_btAcessoEntrar')[0].onclick
			$('#ctl00_cphMainContent_btAcessoEntrar')[0].onclick = null
			
			var esqueci = $('#ctl00_cphMainContent_btEsqueciEnviar')[0].onclick
			$('#ctl00_cphMainContent_btEsqueciEnviar')[0].onclick = null
		}
		catch(e) {}
		
		Validator.New('form')
			. validate_options({ submitHandler : entrar })		
			. message_in('div#abaerror p.message span')						
			. validate_fields('#ctl00_cphMainContent_btAcessoEntrar',{ 											
				'#ctl00_cphMainContent_acessoCpf' : { cpf : true, required : true } 				
			})	
		
		Validator.New('form')
			. validate_options({ submitHandler : esqueci })		
			. message_in('div#abaerroresqueci p.message span')					
			. validate_fields('#ctl00_cphMainContent_btEsqueciEnviar',{ 											
				'#ctl00_cphMainContent_esqueciCpf' : { cpf : true, required : true } 				
			})		
		
		Validator.New('form')	
			. validate_options({ submitHandler: salvar })				
			. message_in('div#mainerror p.message span')					
			. validate_fields('#ctl00_cphMainContent_btSalvar',{ 				
				
				'#ctl00_cphMainContent_nome, \
				#ctl00_cphMainContent_sobrenome,  \
				#ctl00_cphMainContent_email,  \
				#ctl00_cphMainContent_cidade,  \
				[name=ctl00$cphMainContent$sexo], \
				#ctl00_cphMainContent_cpf, \
				#ctl00_cphMainContent_cep, \
				#ctl00_cphMainContent_endereco, \
				#ctl00_cphMainContent_bairro, \
				#ctl00_cphMainContent_numero, \
				#ctl00_cphMainContent_senha, \
				#ctl00_cphMainContent_regulamento, \
				#ctl00_cphMainContent_ddd, \
				#ctl00_cphMainContent_confirmarSenha': { required : true },		
     			'#ctl00_cphMainContent_ddd' : { ddd : true },		
				'#ctl00_cphMainContent_confirmarSenha' : { equalTo : '#ctl00_cphMainContent_senha'},				
				'#ctl00_cphMainContent_numero, #ctl00_cphMainContent_ddd' : { digits : true },
				'#ctl00_cphMainContent_telNumero' : { minlength:8, digits:true, required:true },
				'#ctl00_cphMainContent_cpf' : { cpf : true },
				'#ctl00_cphMainContent_nome, #ctl00_cphMainContent_sobrenome' : { minlength : 2 }  
				
			})	
				
		
		var btValidar = $('#btValidar');
		
		fbiz.FillAddress.parseJSON({
			ajax:{
				url: btValidar.attr('href')
			},
			nodes:{
				button: btValidar,
				cep: [$('#ctl00_cphMainContent_cep')],
				street: $('#ctl00_cphMainContent_endereco'),				
				state: $('#ctl00_cphMainContent_estado'),
				neighbour: $('#ctl00_cphMainContent_bairro'),
				city: $('#ctl00_cphMainContent_cidade'),
				feedback:$('#preench-automatico-feedback')
			}
		});
		
	},

	minha_conta: function(){	
		try {
			var salvar = $('#ctl00_cphMainContent_btSalvar')[0].onclick
			$('#ctl00_cphMainContent_btSalvar')[0].onclick = null
			
		}
		catch(e) {}
		
		Validator.New('form')	
			. validate_options({ submitHandler: salvar })				
			. message_in('div#mainerror p.message span')					
			. validate_fields('#ctl00_cphMainContent_btSalvar',{ 				
				
				'#ctl00_cphMainContent_nome, \
				#ctl00_cphMainContent_sobrenome,  \
				#ctl00_cphMainContent_email,  \
				#ctl00_cphMainContent_cidade,  \
				[name=ctl00$cphMainContent$sexo], \
				#ctl00_cphMainContent_cpf, \
				#ctl00_cphMainContent_cep, \
				#ctl00_cphMainContent_endereco, \
				#ctl00_cphMainContent_bairro, \
				#ctl00_cphMainContent_numero, \
				#ctl00_cphMainContent_senha, \
				#ctl00_cphMainContent_regulamento, \
				#ctl00_cphMainContent_ddd, \
				#ctl00_cphMainContent_confirmarSenha': { required : true },				
				'#ctl00_cphMainContent_confirmarSenha' : { equalTo : '#ctl00_cphMainContent_senha'},				
				'#ctl00_cphMainContent_numero, #ctl00_cphMainContent_ddd' : { digits : true },
				'#ctl00_cphMainContent_telNumero' : { minlength:8, digits:true, required:true },
				'#ctl00_cphMainContent_cpf' : { cpf : true },				
				'#ctl00_cphMainContent_nome, #ctl00_cphMainContent_sobrenome' : { minlength : 2 } 
				
			})	
		
		var btValidar = $('#btValidar');
		
		fbiz.FillAddress.parseJSON({
			ajax:{
				url: btValidar.attr('href')
			},
			nodes:{
				button: btValidar,
				cep: [$('#ctl00_cphMainContent_cep')],
				street: $('#ctl00_cphMainContent_endereco'),				
				neighbour: $('#ctl00_cphMainContent_bairro'),
				state: $('#ctl00_cphMainContent_estado'),
				city: $('#ctl00_cphMainContent_cidade')
			}
		});
		
	},
	
	login : function(){
		try {
			var entrar = $('#ctl00_btEntrar')[0].onclick
			$('#ctl00_btEntrar')[0].onclick = null
		}catch(e){}
		
		Validator.New('form')	
			. validate_options({ submitHandler : entrar })		
			. message_in('div#login p.message span')					
			. validate_fields('#ctl00_btEntrar',{ 											
				'#ctl00_entrarCpf' : { cpf : true, required : true } ,
				'#ctl00_entrarSenha' : { required : true }				
			})	
	},
	
	consulta : function(){
		try {
			var consultar = $('#ctl00_cphMainContent_btConsultarCPF')[0].onclick				
			$('#ctl00_cphMainContent_btConsultarCPF')[0].onclick = null			
			
			var consultarTelefone = $('#ctl00_cphMainContent_btConsultarTelefone')[0].onclick						
			$('#ctl00_cphMainContent_btConsultarTelefone')[0].onclick = null
		}
		catch(e){ "Não existe os botões nessa tela " }
		
		Validator.New('form')	
			. validate_options({ submitHandler : consultar })					
			. message_in('div#internet p.message span')									
			. validate_fields('#ctl00_cphMainContent_btConsultarCPF',{ 											
				'#ctl00_cphMainContent_txtCPF' : { cpf : true, required : true }				
			})	
		
		Validator.New('form')
			. validate_options({ submitHandler : consultarTelefone })		
			. message_in('div#celular p.message span')					
			. validate_fields('#ctl00_cphMainContent_btConsultarTelefone',{ 											
				'#ctl00_cphMainContent_txtDDD' : { digits : true, required:true },
				'#ctl00_cphMainContent_txtCelular' : { digits : true, required:true, minlength:8 }					
			})	
	},
	
	fale_conosco : function(){
		var submit = $('#ctl00_cphMainContent_btEnviar')[0].onclick
		$('#ctl00_cphMainContent_btEnviar')[0].onclick = null
		
		Validator.New('form')
			. validate_options({ submitHandler : submit })
			. message_in('div#faq p.message span')					
			. validate_fields('#ctl00_cphMainContent_btEnviar',{ 											
				'#ctl00_cphMainContent_nome, #ctl00_cphMainContent_mensagem' : { required : true } ,
				'#ctl00_cphMainContent_email': { email : true }								
			})	
	},
	
	home : function(){		
		
		var internet = $('#ctl00_cphMainContent_btInternetIr')[0].onclick
			$('#ctl00_cphMainContent_btInternetIr')[0].onclick = null
		
		var celular = $('#ctl00_cphMainContent_btCelularIr')[0].onclick
			$('#ctl00_cphMainContent_btCelularIr')[0].onclick = null
		
		Validator.New('form')
			. validate_options({ submitHandler : celular })
			. message_in('div#erroconsulta p.message span')					
			. validate_fields('#ctl00_cphMainContent_btCelularIr',{ 															
				'#ctl00_cphMainContent_txtAbaCelularDDD': { digits : true },
				'#ctl00_cphMainContent_txtAbaCelularSufixo':{ cel: true }								
			})	
		
		Validator.New('form')
			. validate_options({ submitHandler : internet })	
			. message_in('div#erroconsulta p.message span')				
			. validate_fields('#ctl00_cphMainContent_btInternetIr',{ 															
				'#ctl00_cphMainContent_txtAbaInternetCPF': { cpf : true }								
			})		
	
	}
	
}


